package com.vogue.supplymall.payment.dto;

import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 多单合并支付调用接口封装参数DTO
 * @author cy
 */
@SuppressWarnings("serial")
public class MultiplePayInputParameter extends ValidationDTO implements Serializable {

    /**
     * 验证有效值的字段集合
     */
    public static final Map<String, List<Object>> valueValidityMap = new HashMap<String, List<Object>>() {{
         put("tsflag", Arrays.asList((new Object[] {0, 1})));
         put("paytypeid", Arrays.asList((new Object[] {5, 6, 7, 8, 20})));
         put("product", Arrays.asList((new Object[] {"600000","700000"})));
    }};
    
    /**
     * 验证必填字段的集合
     */
    public static final List<String> requiredList = Arrays.asList((new String[]{
        "paytypeid", "money", "suborders", "redirectUrl"
    }));
    
    /**
     * 风行云供应链:600000,食尚购:700000
     */
    private String product = "700000";
    
    /**
     * 支付方式（5：闪惠 6：微信 7：百度钱包 8：支付宝 20：商龙云钱包）(必填)
     */
    private Integer paytypeid;
    
    /**
     * 价格(必填)
     */
    private Double money = 0.0;
    
    /**
     * 子订单集合
     */
    private List<MultiplePayOrder> suborders;
    
    /**
     * 支付成功返回地址（网页支付用）
     */
    private String redirectUrl;
    
    /**
     * 账款到账延迟标识，默认1是，0否
     */
    private Integer tsflag = 1;

    /**
     * 支付方门店mcid
     */
    private String paystoreid;
    
    /**
     * 客户端IP地址
     */
    private String clientIp;

    /**
     * @return 风行云供应链:600000,食尚购:700000
     */
    public String getProduct() {
        return product;
    }

    /**
     * 设置 风行云供应链:600000,食尚购:700000
     * @param product 风行云供应链:600000,食尚购:700000
     */
    public void setProduct(String product) {
        this.product = product;
    }

    /**
     * @return 支付方式（5：闪惠 6：微信 7：百度钱包 8：支付宝 10：商龙云钱包）(必填)
     */
    public Integer getPaytypeid() {
        return paytypeid;
    }

    /**
     * 设置 支付方式（5：闪惠 6：微信 7：百度钱包 8：支付宝 10：商龙云钱包）(必填)
     * @param paytypeid 支付方式
     */
    public void setPaytypeid(Integer paytypeid) {
        this.paytypeid = paytypeid;
    }

    /**
     * @return 价格(必填)
     */
    public Double getMoney() {
        return money;
    }

    /**
     * 设置 价格(必填)
     * @param money 价格
     */
    public void setMoney(Double money) {
        this.money = money;
    }

    /**
     * @return 子订单集合
     */
    public List<MultiplePayOrder> getSuborders() {
        return suborders;
    }

    /**
     * 设置 子订单集合
     * @param suborders 子订单集合
     */
    public void setSuborders(List<MultiplePayOrder> suborders) {
        this.suborders = suborders;
    }

    /**
     * @return 支付成功返回地址（网页支付用）
     */
    public String getRedirectUrl() {
        return redirectUrl;
    }

    /**
     * 设置 支付成功返回地址（网页支付用）
     * @param redirectUrl 支付成功返回地址
     */
    public void setRedirectUrl(String redirectUrl) {
        this.redirectUrl = redirectUrl;
    }

    /**
     * @return 账款到账延迟标识，默认1是，0否
     */
    public Integer getTsflag() {
        return tsflag;
    }
    /**
     * 设置 账款到账延迟标识，默认1是，0否
     * @param tsflag 账款到账延迟标识，默认1是，0否
     */
    public void setTsflag(Integer tsflag) {
        this.tsflag = tsflag;
    }

    /**
     * @return 支付方门店mcid
     */
    public String getPaystoreid() {
        return paystoreid;
    }

    /**
     * 设置  支付方门店mcid
     * @param paystoreid 支付方门店mcid
     */
    public void setPaystoreid(String paystoreid) {
        this.paystoreid = paystoreid;
    }

    /**
     * @return 客户端IP地址
     */
    public String getClientIp() {
        return clientIp;
    }

    /**
     * 设置 客户端IP地址
     * @param clientIp 客户端IP地址
     */
    public void setClientIp(String clientIp) {
        this.clientIp = clientIp;
    }

    /**
     * @return 验证必填字段的集合
     */
    @Override
    List<String> requiredFieldList() {
        return requiredList;
    }

    /**
     * @return 验证有效值的字段集合
     */
    @Override
    Map<String, List<Object>> valueValidityMap() {
        return valueValidityMap;
    }
    
    /**
     * 字符串格式化
     */
//    @Override
//    public String toString() {
//        StringBuffer strbuf = new StringBuffer("");
//        for (MultiplePayOrder orderInfo : suborders) {
//            strbuf.append(orderInfo.toString()).append(",");
//        }
//        String ordersStr = "[";
//        if (strbuf.length() > 0) {
//            ordersStr += strbuf.substring(0, strbuf.length() - 1);
//        }
//        ordersStr += "]";
//        return String.format("{\"product\":%s, \"paytypeid\":%s, \"money\":%.2f, \"redirectUrl\":\"%s\", \"tsflag\":%s, \"suborders\":%s}", 
//                product, paytypeid, money, redirectUrl, tsflag, ordersStr);
//    }
}
